package com.macro.mall.pms.service;

import com.github.pagehelper.Page;
import com.macro.mall.pms.domain.ProductAttributeValue;
import com.macro.mall.pms.entity.ProductAttributeValueEntity;
import com.macro.mall.pms.service.bo.InsertProductAttributeValueInput;
import com.macro.mall.pms.service.bo.PagedQueryProductAttributeValueInput;
import com.macro.mall.pms.service.bo.UpdateProductAttributeValueInput;

import java.util.List;

/**
 * 商品属性参数值Service
 *
 * @author xuyanjun
 * @date 2019-12-13
 */
public interface ProductAttributeValueService {

    /**
     * 新增商品属性参数值
     *
     * @param input input
     * @return 新增id
     */
    long insert(InsertProductAttributeValueInput input);

    /**
     * 修改商品属性参数值
     *
     * @param input input
     */
    void update(UpdateProductAttributeValueInput input);

    /**
     * 删除商品属性参数值
     *
     * @param id id
     */
    void delete(long id);

    /**
     * 根据Id获取商品属性参数值
     *
     * @param id id
     * @return 商品属性参数值
     */
    ProductAttributeValueEntity getById(long id);

    /**
     * 根据批量Id获取商品属性参数值
     *
     * @param batchIds 批量ids
     * @return 商品属性参数值集合
     */
    List<ProductAttributeValueEntity> listByBatchIds(List<Long> batchIds);

    /**
     * 根据商品Id获取商品属性参数值
     *
     * @param productId 商品Id
     * @return 商品属性参数值集合
     */
    List<ProductAttributeValueEntity> listByProductId(long productId);

    /**
     * 分页查询
     *
     * @param input input
     * @return 分页的商品属性参数值
     */
    Page<ProductAttributeValueEntity> pagedQuery(PagedQueryProductAttributeValueInput input);

    /**
     * 将实体对象转换成domain对象
     *
     * @param productAttributeValueEntity 实体
     * @return productAttributeValue
     */
    ProductAttributeValue entityToDomain(ProductAttributeValueEntity productAttributeValueEntity);

    /**
     * 将实体对象转换成domain对象
     *
     * @param productAttributeValueEntities 实体
     * @return productAttributeValues
     */
    List<ProductAttributeValue> entityToDomain(List<ProductAttributeValueEntity> productAttributeValueEntities);

}